PHP MVC Models
Probleem
We moeten de gegevens vanuit de controller naar de view sturen en daarvoor hebben we een gegevenstructuur nodig waarin we die gegevens kunnen opslaan.
Oplossing
Voor eenvoudige structuren gebruiken we een associatieve array. In webapplicaties moeten de gegevens uit een model meestal in één of ander HTML controleelement (INPUT, SELECT, TABLE, enz.) aan de gebruiker getoond worden. Als sleutel van de associative array gebruiken we de waarde van het name attribuut van het HTML element en als waarde, de waarde die we aan de gebruiker willen tonen of de waarde die de gebruiker opgeeft.
Voor complexere structuren kan je ook klassen gebruiken en arrays van objecten om instanties van de klassen op te slaan.
In Fric-frac gaan we associatieve array's gebruiken.
Voorbeelden
- Een eenvoudig voorbeeld:
$model = array('title' => 'Admin index');
- Zo zou een model er kunnen uitzien voor een entiteit, bijvoorbeeld voor
Event
. De gegevens van een rij uit deEvent
tabel en de waarden die in hetSELECT
html element vanEventCategory
getoond moeten worden. In het deOPTION
elementen van hetSELECT
element moeten we in hetvalue
attrribuut deId
vanEvent
zetten. Hetzelfde moeten we voorEventTopic
doen. Tenslotte moeten we nog een lijst met de rijen uit deEvent
tabel voorzien:$model = array( 'tableName' => 'Event', 'error' => 'Geen', 'row' => array( 'Name' => 'PHP serieus', 'Location' => 'Antwerpen', 'Starts' => '2020-10-10 20:00', 'Ends' => '2020-10-11 22:00', 'Image' => 'images/php-serieus.png', 'Description' => 'Leren werken met ThreepennyMVC', 'OrganiserName' => 'Modern Ways', 'OrganiserDescription' => 'Teaching material', 'EventCategoryId' => 3, 'EventTopicId' => 4 ), 'listEventCategory' => array( array('Id' => 1, 'Name' => 'Appearance or Signing'), array('Id' => 2, 'Name' => 'Attraction Camp.'), array('Id' => 3, 'Name' => 'Trip or Retreat'), array('Id' => 4, 'Name' => 'Concert or Performance'), array('Id' => 5, 'Name' => 'Course, Training or Workshop') ), 'listEventTopic' => array( array('Id' => 1, 'Name' => 'Auto, Boat & Air'), array('Id' => 2, 'Name' => 'Business & Professional'), array('Id' => 3, 'Name' => 'Charities & Causes'), array('Id' => 4, 'Name' => 'Community & Culture'), array('Id' => 5, 'Name' => 'Family & Education') ), 'list' => array( array('Id' => 1, 'Name' => 'PHP serieus', 'Location' => 'Antwerpen'), array('Id' => 1, 'Name' => 'Bob Dylan in café De Kat', 'Location' => 'Antwerpen'), array('Id' => 1, 'Name' => 'Boekvoorstelling Klaartje Schrijvers', 'Location' => 'Antwerpen'), array('Id' => 1, 'Name' => 'Javacscript serieus', 'Location' => 'Antwerpen') ) );